In any stored-program-controlled system deploying single or multi core general purpose processors or DSP devices, the debugging and troubleshooting process requires direct real-time access to specific processor devices and their plural processor units. It is necessary to have the flexibility to examine their registers, memory, and data structures at various stages of processing, without affecting the operation of active plural processor units. At present the conventional means of capturing data required for troubleshooting and/or system/network analysis is either through prior code instrumentation or by using commercially available debuggers.
For code instrumentation it is not feasible to instrument an initial version of the code for access to all possible data structures. Accordingly, once new or different data structures are determined to be necessary for a given troubleshooting activity, the related code instrumentation requires the release of new software versions. Implementation of new software versions occasion significant cost and delay, both in terms of development and actual deployment. Moreover, in general customers regard debug load deployment as a major inconvenience.
On the other hand, commercial debug packages require physical connectivity to the target under test. Moreover, by the nature of their intrusive operation, debug packages can cause users to lose their sessions, calls to be dropped, or otherwise affect the operation of the system. Troubleshooting of live systems requires that user sessions or calls are not impaired in any way. Yet external equipment connectivity to the target under test is, in most cases, not feasible in a live system environment and is highly discouraged or even not allowed by customers.